package com.yxh.www.author.controller;


import com.yxh.www.author.api.AuthorSmResourceApi;
import com.yxh.www.author.domain.SmResource;
import com.yxh.www.author.service.SmResourceService;
import com.yxh.www.common.result.Result;
import io.swagger.annotations.Api;

import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * <p>
 * 系统菜单-RBAC 前端控制器
 * </p>
 *
 * @author Yangxiaohui
 * @since 2020-05-09
 */
@Api(tags = "系统资源管理")
@RestController
public class SmResourceController implements AuthorSmResourceApi {

    private final SmResourceService smResourceService;

    public SmResourceController(SmResourceService smResourceService) {
        this.smResourceService = smResourceService;
    }

    /**
     * 新增系统资源信息
     *
     * @param resourceTitle 资源标题    必填
     * @param resourceIcon  资源图标    非必填
     * @param resourcePath  资源路径    非必填
     * @param parentId      父级ID    非必填 默认 0：根目录
     * @param permissionKey 权限标识    非必填
     * @param resourceType  资源（0：目录；1：菜单；2：按钮）  必填
     * @return 统一响应 {@link Result}
     */
    @Override
    public Result<Object> addSmResource(String resourceTitle, String resourceIcon, String resourcePath, String parentId, String permissionKey, String resourceType) {
        return smResourceService.addSmResource(resourceTitle, resourceIcon, resourcePath, parentId, permissionKey, resourceType);
    }

    /**
     * 修改系统资源
     *
     * @param id             系统资源ID 必填
     * @param resourceTitle  资源标题   非必填
     * @param resourceIcon   资源图标   非必填
     * @param resourcePath   资源路径   非必填
     * @param permissionKey  权限标识   非必填
     * @param resourceStatus 资源状态（0：正常；1：失效）    非必填
     * @param orderNumber    排序编号   非必填
     * @return 统一响应 {@link Result}
     */
    @Override
    public Result<Object> modifySmResource(String id, String resourceTitle, String resourceIcon, String resourcePath, String permissionKey, String resourceStatus, Integer orderNumber) {
        return smResourceService.modifySmResource(id, resourceTitle, resourceIcon, resourcePath, permissionKey, resourceStatus, orderNumber);
    }

    /**
     * 根据ID删除系统资源
     *
     * @param ids 资源ID集合
     * @return 统一响应 {@link Result}
     */
    @Override
    public Result<Object> removeSmResource(String[] ids) {
        return smResourceService.removeSmResource(ids);
    }

    /**
     * 查询系统资源列表
     *
     * @param resourceTitle 资源标题 模糊查询
     * @param resourcePath  资源路径 模糊查询
     * @return 统一响应 {@link Result< List >} 实体 {@link SmResource}
     */
    @Override
    public Result<List<SmResource>> listSmResource(String resourceTitle, String resourcePath) {
        return smResourceService.listSmResource(resourceTitle, resourcePath);
    }

    /**
     * 分页查询系统资源列表
     *
     * @param resourceTitle 资源标题 模糊查询
     * @param resourcePath  资源路径 模糊查询
     * @param pageNum       页码          默认值 1
     * @param pageSize      页面数据长度    默认值 20
     * @return 统一响应 {@link Result}
     */
    @Override
    public Result<Object> pageSmResource(String resourceTitle, String resourcePath, Long pageNum, Long pageSize) {
        return smResourceService.pageSmResource(resourceTitle, resourcePath, pageNum, pageSize);
    }
}
